package com.pac.user.service;

import java.util.List;

import com.common.annotation.PageSeparate;
import com.common.util.LogicException;
import com.pac.doctor.bean.DoctorBean;
import com.pac.user.bean.UserBean;

/**
 * 用户Service接口
 * 
 * @author lujun.chen
 * @version [版本号, 2015年2月13日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface UserService {

	/**
	 * 查询单条用户记录
	 * 
	 * @param userBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public UserBean findUser(UserBean userBean);

	/**
	 * 添加用户
	 * 
	 * 同时绑定用户角色
	 * 
	 * @param userBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public String addUser(UserBean userBean);

	/**
	 * 用户注册
	 * 
	 * @param userBean
	 *            用户Bean
	 * 
	 * @param roleId
	 *            角色ID
	 * 
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public boolean register(UserBean userBean, String roleId);

	/**
	 * 医生注册
	 * 
	 * @param userBean
	 *            用户信息Bean
	 * @param roleId
	 *            角色ID
	 * @param doctorBean
	 *            医生信息Bean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public boolean doctorRegister(UserBean userBean, String roleId,
			DoctorBean doctorBean);

	/**
	 * 列表查询用户信息
	 * 
	 * @param userBean
	 *            用户信息Bean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	@PageSeparate
	public List<UserBean> queryUser(UserBean userBean);

	/**
	 * 删除用户
	 * 
	 * @param userId
	 * @return
	 * @throws LogicException
	 * @see [类、类#方法、类#成员]
	 */
	public boolean delUserById(String userId);

	/**
	 * 修改用户状态
	 * 
	 * @param userId
	 *            用户ID
	 * @param state
	 *            用户状态 0：启用，1：停用
	 * @return
	 * @throws LogicException
	 * @see [类、类#方法、类#成员]
	 */
	public boolean editState(String userId, String state);

	/**
	 * 修改用户
	 * 
	 * @param userBean
	 * @return
	 * @throws LogicException
	 * @see [类、类#方法、类#成员]
	 */
	public boolean editUser(UserBean userBean);

	/**
	 * 修改用户基本信息
	 * 
	 * @param userBean
	 * @return
	 * @see [类、类#方法、类#成员]
	 */
	public boolean editUserBase(UserBean userBean);
	
	/**
	 * 修改密码
	 * 
	 * @param userBean
	 *            用户对象，session中取出来的
	 * @param oldPassword
	 *            原密码（明文）
	 * @param newPassword
	 *            新密码（明文）
	 * @return
	 * @throws LogicException
	 * @see [类、类#方法、类#成员]
	 */
	public boolean editPassword(UserBean userBean, String oldPassword,
			String newPassword);

}
